package top.tangyh.lamp.care.service;

import top.tangyh.basic.base.service.SuperService;
import top.tangyh.lamp.care.entity.BObsvPtCfg;
import top.tangyh.lamp.care.vo.query.ObsvPtCfgForRdParam;
import top.tangyh.lamp.care.vo.query.ObsvPtCfgQueryParam;
import top.tangyh.lamp.care.vo.result.ObsvCfgForRdDto;
import top.tangyh.lamp.care.vo.result.ObsvPtCfgDto;
import top.tangyh.lamp.care.vo.save.BObsvPtCfgSaveVO;
import top.tangyh.lamp.care.vo.save.ObsvPtCfgParam;
import top.tangyh.lamp.care.vo.update.BObsvPtCfgUpdateVO;
import top.tangyh.lamp.care.vo.result.BObsvPtCfgResultVO;
import top.tangyh.lamp.care.vo.query.BObsvPtCfgPageQuery;

import java.util.List;
import java.util.Map;
import java.util.Set;


/**
 * <p>
 * 业务接口
 * 病人观察项目配置表
 * </p>
 *
 * @author zqb
 * @date 2024-07-26 10:31:53
 * @create [2024-07-26 10:31:53] [zqb] [代码生成器生成]
 */
public interface BObsvPtCfgService extends SuperService<Long, BObsvPtCfg> {

    /**
     * 查询用于观察记录的配置项编码集合，按观察项类别返回
     *
     * @param param          查询参数
     * @param obsrvypeFillte 观察项类别集合，不在该集合中的记录会被过滤掉
     * @return
     */
    Map<String, Set<String>> getObsvCodeSetFinalOfLeafByType(ObsvPtCfgForRdParam param, Set<String> obsrvypeFillte);

    List<ObsvCfgForRdDto> queryForRd(ObsvPtCfgForRdParam param);


    /**
     * 查询用于观察记录的配置项编码集合
     *
     * @param param 查询参数
     * @return
     */
    Set<String> getObsvCodeSetFinalOfLeaf(ObsvPtCfgForRdParam param);


    /**
     * 查询病人的配置
     *
     * @param param 查询参数
     * @return
     */
    List<ObsvPtCfgDto> getObsvPtCfg(ObsvPtCfgQueryParam param);


    List<ObsvPtCfgDto> allowSelect(ObsvPtCfgQueryParam param);

    /**
     * 保存病人观察项配置
     *
     * @param param 保存参数
     * @return
     */
    int insertAndUpdate(ObsvPtCfgParam param);


}


